/*
 * iniciarFat.h
 *
 *  Created on: 08/10/2011
 *      Author: utn_so
 */


#ifndef INICIARFAT_H_
#define INICIARFAT_H_


#include <stdint.h>
#include "cluster.h"
#include "colas.h"
#include "estructuras.h"
#include "log.h"
#include "cache.h"
#include <semaphore.h>



/* TODAS Globales */
	/******************
	uint32_t sectoresPorCluster = 4;
	uint32_t sectorComienzoFAT = 32;
	uint32_t sectoresPorFAT = 989;
	uint32_t tamanioSector = 512;
	uint32_t iSector = sectorComienzoFAT;
	******************/
	/* TODAS GLOBALES */

struct bootSectorStruct { // Estructura que guardará los datos del Boot Sector

	uint16_t 	bytesPorSector;				// Cantidad de Bytes en un sector
	char 		sectoresPorCluster;			// Cantidad de sectores or cluster
	uint16_t 	sectorComienzoFat;			// Número de sector en el que comienza la primer FAT
	char 		cantidadDeFat;				// Cantidades de FAT en el Disco
	uint32_t 	cantidadTotalDeSectores;	// Cantidad total de sector en el disco
	uint32_t 	sectoresPorFat;				// Cantidad de sector que ocupa la FAT
	uint32_t 	clusterRaiz;				// Cluster donde está ubicado el directorio Raiz
	uint16_t 	sectorFSinfo;				// Numero de Sector del FS Info
	uint32_t	ID_NumeroDeSerie;			// Número de Serie del Dispositivo
};

uint32_t *fat; //puntero a la Tabla de Asignación de Archivos
pthread_mutex_t mutexFat;
struct bootSectorStruct *bootSector; //Puntero a una estructura que guarda información del Boot Sector
struct colaClusterLibres *clustersLibres;
pthread_mutex_t mutexClustersLibres;
pthread_mutex_t mutexDireccionamiento;
configuracion config;
struct poolConexiones * conexiones;
//sem_t conexionesTotales;
t_log * log;
configuracion estructuraConfiguracion;
//struct colaDeCache * cache;
//pthread_mutex_t mutexCache;

uint32_t leerBootSector();
uint32_t leerFat();
void inicializarMutex();

#endif /* INICIARFAT_H_ */
